SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[spEjecutarNovedadesLU]
@Cuise Int,
@idAgente Int
AS

Set Dateformat DMY

Declare @idNovedad Int, @Agente Int, @Movimiento Int, @IDS Int, @LegajoVinculado Int, @FechaDesde Datetime, @FechaHasta Datetime,
	@SituacionRevista Int, @CargoSalarial Int, @Horas Int, @Licencia Int, @Plaza Int, @OrganizacionOriginal Int, @Error Int, @idServicioNuevo Int,
	@Mensaje Varchar(500), @ErrorC Int

Select @Error = 0, @Mensaje = 'OK'

Begin Transaction

If @Cuise <> -1 And @idAgente <> -1
Declare NovedadesLU Cursor For 
	Select idNovedadDeConciliacionLU, Agente, Movimiento, IDS, LegajoVinculado, FechaAltaODesde, FechaBajaOHasta, NuevaSituacionRevista, 
	NuevoCargoSalarial, NuevasHoras, Licencia, Plaza, OrganizacionOriginal
	From tb_NovedadesDeConciliacionLU Where OrganizacionOriginal = @Cuise And Agente = @Agente And Estado = 3

If @Cuise <> -1 And @idAgente = -1
Declare NovedadesLU Cursor For 
	Select idNovedadDeConciliacionLU, Agente, Movimiento, IDS, LegajoVinculado, FechaAltaODesde, FechaBajaOHasta, NuevaSituacionRevista, 
	NuevoCargoSalarial, NuevasHoras, Licencia, Plaza, OrganizacionOriginal
	From tb_NovedadesDeConciliacionLU Where OrganizacionOriginal = @Cuise And Estado = 3

If @Cuise = -1 And @idAgente <> -1
Declare NovedadesLU Cursor For 
	Select idNovedadDeConciliacionLU, Agente, Movimiento, IDS, LegajoVinculado, FechaAltaODesde, FechaBajaOHasta, NuevaSituacionRevista, 
	NuevoCargoSalarial, NuevasHoras, Licencia, Plaza, OrganizacionOriginal
	From tb_NovedadesDeConciliacionLU Where Agente = @Agente And Estado = 3

If @Cuise = -1 And @idAgente = -1
Declare NovedadesLU Cursor For 
	Select idNovedadDeConciliacionLU, Agente, Movimiento, IDS, LegajoVinculado, FechaAltaODesde, FechaBajaOHasta, NuevaSituacionRevista, 
	NuevoCargoSalarial, NuevasHoras, Licencia, Plaza, OrganizacionOriginal
	From tb_NovedadesDeConciliacionLU Where Estado = 3

Open NovedadesLU

Fetch Next From NovedadesLU Into @idNovedad, @Agente, @Movimiento, @IDS, @LegajoVinculado, @FechaDesde, @FechaHasta, @SituacionRevista,
	@CargoSalarial, @Horas, @Licencia, @Plaza, @OrganizacionOriginal

While @@Fetch_Status = 0 And @Error = 0
Begin
	If @Movimiento = 1 --ALTA
	Begin
		Declare @NroDeOrdenIDS Int, @Asignatura Int, @UbicacionOrig Int, @Baja Varchar(1), @TipoDeFuncion Int,
			@RegimenSalarial Int, @Nivel Int, @Modalidad Int, @Zona Int, @Presupuesto Int, @Financiamiento Int, @Documento Int
	
		Select @NroDeOrdenIDS = Max(NroDeOrden9) + 1 From tb_ServiciosAgentes Where Agente = @Agente

		Select @Asignatura = Asignatura, @UbicacionOrig = Organizacion, @TipoDeFuncion = F.TipoDeFuncion, @Nivel = Nivel, 
		           @Modalidad = Modalidad, @Zona = Zona, @Presupuesto = P.Presupuesto, @Financiamiento = P.Financiamiento
			From tb_Plazas P, tb_FuncionesLUI F, tb_SubOrganizaciones Where IdPlaza = @Plaza And IdFuncion = Funcion And SubOrganizacion = idSubOrganizacion

		Select @Documento = Documento From tb_Agentes Where IdAgente = @Agente

		Select @RegimenSalarial = RegimenSalarial From tb_Cargos Where IdCargo = @CargoSalarial	

		If @FechaHasta Is Null
			Select @Baja = 'N'
		Else
			Select @Baja = 'S'
	
		Insert tb_ServiciosAgentes Select @Agente, @NroDeOrdenIDS, @CargoSalarial, @Asignatura, @Horas, @UbicacionOrig, @SituacionRevista,
			@FechaDesde, @Baja, @FechaHasta, Null, Null, Null, 13, Null, 'S', 1, 1, 12, @Financiamiento, @Presupuesto, 12, @TipoDeFuncion, 
			@RegimenSalarial, Null, @LegajoVinculado, Null, 3, Null Vacante, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC, @Mensaje = @Mensaje + 'No se pudo insertar el Servicio de Alta \n'

		Select @idServicioNuevo = @@IDENTITY

		Insert tb_SubServiciosAgentes Select @idServicioNuevo, 1, @FechaDesde, @Baja, @FechaHasta, Null, 1, Null, Null, Null, Null, @Plaza,
			5, 1, @Nivel, @Modalidad, @Zona, Null, Null, Null, Null, Null FechaCertificado, 3, Null, Null, Null, Null, Null, Null, Null, Null, Null
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC,  @Mensaje = @Mensaje + 'No se pudo insertar el Subservicio de Alta \n'

		Insert LegajosSalariales Select @idServicioNuevo, @Documento, @Cuise, @CargoSalarial, @LegajoVinculado, @Horas, @Agente, @RegimenSalarial, @UbicacionOrig, @SituacionRevista
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC	

	End

	If @Movimiento = 2 --BAJA
	Begin
		Update tb_ServiciosAgentes Set FechaBaja = @FechaHasta, Baja = 'S' Where idServicioAgente = @IDS
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC,  @Mensaje = @Mensaje + 'No se pudo actualizar la Fecha de Baja del Servicio \n'
		Update tb_SubServiciosAgentes Set FechaBaja = @FechaHasta, Baja = 'S' Where ServicioAgente = @IDS And FechaBaja Is Null
		If @@Error <> 0
			Select @Error = @@ERROR, @Mensaje = @Mensaje + 'No se pudo actualizar la Fecha de Baja del SubServicio \n'
		Delete From LegajosSalariales Where idServicioAgente = @IDS
	End

	If @Movimiento = 4 --SITUACION DE REVISTA
	Begin
		Update tb_ServiciosAgentes Set SituacionRevista = @SituacionRevista Where idServicioAgente = @IDS
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC, @Mensaje = @Mensaje + 'No se pudo actualizar la situacion de revista del Servicio \n'
		Update LegajosSalariales Set SituacionRevista = @SituacionRevista Where idServicioAgente =@IDS
	End

	If @Movimiento = 5 -- CARGO SALARIAL
	Begin
		Update tb_ServiciosAgentes Set CargoSalarial = @CargoSalarial Where idServicioAgente = @IDS
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC, @Mensaje = @Mensaje + 'No se pudo actualizar el cargo salarial del Servicio \n'
		Update LegajosSalariales Set CargoSalarial = @CargoSalarial Where idServicioAgente = @IDS
	End

	If @Movimiento = 6 --HORAS
	Begin
		Update tb_ServiciosAgentes Set Horas = @Horas Where idServicioAgente = @IDS
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC,  @Mensaje = @Mensaje + 'No se pudo actualizar las horas del Servicio \n'
		Update LegajosSalariales Set Horas = @Horas Where idServicioAgente = @IDS
	End

	If @Movimiento = 8
	Begin
		Declare @IdSubServicio Int, @NroDeOrden Int
		Select @IdSubServicio = IdSubServicio, @NroDeOrden = NroOrden9 From tb_SubServiciosAgentes Where ServicioAgente = @IDS And FechaBaja Is Null
		Update tb_SubServiciosAgentes Set FechaBaja = Dateadd(Day, -1, @FechaDesde), Baja = 'S'  Where ServicioAgente = @IDS And FechaBaja Is Null
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC,  @Mensaje = @Mensaje + 'No se pudo actualizar la fecha de baja del SubServicio \n'
		Insert tb_SubServiciosAgentes Select ServicioAgente, @NroDeOrden + 1, @FechaDesde, 'N', null, null, 5, null, null, null, null, 
			plaza, 5, 1, nivel, modalidad, zona, @Licencia, null, null, null, null, estadoliqext, null, null, null, null, null, null, null, null, null
			From tb_SubServiciosAgentes Where idSubServicio = @IdSubServicio
		Select @ErrorC = @@Error
		If @ErrorC <> 0
			Select @Error = @ErrorC, @Mensaje = @Mensaje + 'No se pudo insertar la licencia \n'
	End

	Update tb_NovedadesDeConciliacionLU Set Estado = 1 Where idNovedadDeConciliacionLU = @IdNovedad
	Select @ErrorC = @@Error
	If @ErrorC <> 0
		Select @Error = @ErrorC,  @Mensaje = @Mensaje + 'No se pudo actualizar el estado de la novedad de conciliacion \n'			

	Fetch Next From NovedadesLU Into @idNovedad, @Agente, @Movimiento, @IDS, @LegajoVinculado, @FechaDesde, @FechaHasta, @SituacionRevista,
		@CargoSalarial, @Horas, @Licencia, @Plaza, @OrganizacionOriginal
End

Close NovedadesLU
Deallocate NovedadesLU

If @Error = 0
	Commit Transaction
Else
	Rollback Transaction 

Select @Mensaje Resultado







GO
